#include "shm.hpp"
using namespace std;
extern Log log;
int main()
{
    //1.创建共享内存
    int shmid=CreateShareMem();
    sleep(5);
    //2.挂载
    //nullptr表示将共享内存挂接到共享区的哪个位置由系统决定。
    //0表示内存的权限由系统默认决定
    char*shmaddr=(char*)shmat(shmid,nullptr,0);
     log(Info, "shmat success, error string: %s, error code: %d", strerror(errno), errno);
     sleep(5);
    //3.去除关联
    shmdt(shmaddr);
    log(Info, "shmdt success, error string: %s, error code: %d", strerror(errno), errno);
     sleep(5);
    //4.释放共享内存
    //第三个参数是一个结构体，里面包含了共享内存的属性，想获取属性的可以传入结构体进行获取
    //IPC_STAT用于从内核中获取共享内存的所有属性，将属性信息放到buf缓冲区里面
    shmctl(shmid,IPC_RMID,nullptr);
    log(Info, "shmctl success, error string: %s, error code: %d", strerror(errno), errno);
    sleep(5);
    return 0;
}